<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="padding:10px;">
<p>说明：
    <span>方法(做两件及以上事情)的头部有注释,注释需体现整个方法的思路（最好列点说明） 只做一件事情的方法,写好方法描述.</span>
</p>
<br/>
<p>正例：注释需体现整个方法的思路（最好列点说明）, 说明方法的目的(意图),有大版本修改,添加历史记录描述</p>
<div style="margin:10px;padding:10px;border:1px solid #000000;white-space: pre-line;">
<br/>    /**
<br/>    * （其他考试记录）发起考试
<br/>    * 1. 获取发起考试所需要的业务数据
<br/>    * 2. 通过上下文重新获取service对象以便实现事务控制
<br/>    * 3. 保存发起考试所需业务数据
<br/>    * @param id
<br/>    * @param auditStatus   审核状态
<br/>    * @return com.dongbao.core.tips.Tip
<br/>    * @author wangzhidong
<br/>    * @date 2021/5/13 9:27
<br/>    **/
<br/>    @Override
<br/>    public Tip startOtherExam(Long id, Integer auditStatus) {
<br/>        log.error(&quot;（其他考试记录）发起考试开始， id：{}&quot;, id);
<br/>        Tip tip = new SuccessTip();
<br/>
<br/>        //1. 获取发起考试所需要的业务数据
<br/>        RecOtherExamDataVO saveVO = this.getOtherExamData(id, auditStatus);
<br/>
<br/>        //2. 通过上下文重新获取service对象以便实现事务控制（事务在本service方法中具有传递性，在方法开始前如果未加事务，且未调用其他服务类事务方法执行，调用本Service其他事务方法是不会走事务的）
<br/>        IRecExamTrainOtherRecordService recordService =
<br/>        SpringContextUtil.getBean(IRecExamTrainOtherRecordService.class);
<br/>
<br/>        //3. 保存发起考试所需业务数据
<br/>        recordService.saveStartOtherExamData(saveVO);
<br/>
<br/>        log.error(&quot;（其他考试记录）发起考试结束， id：{}&quot;, id);
<br/>
<br/>        return tip;
<br/>    }
<br/>
</div>
<br/>
<p>反例：</p>
<div style="margin:10px;padding:10px;border:1px solid #000000;white-space: pre-line;">
<br/>    // 方法上没注释，逻辑多但未列点说明
<br/>    @Override
<br/>    @Transactional(rollbackFor = Exception.class)
<br/>    public Tip startOtherExam(Long id) {
<br/>        log.info(&quot;（其他考试记录）发起考试， id:{}&quot;, id);
<br/>        Tip result = new SuccessTip();
<br/>        if (!super.checkId(id)) {
<br/>            return result.error(1, &quot;参数为空&quot;);
<br/>        }
<br/>
<br/>        // 根据id查询
<br/>        final RecExamTrainOtherRecord record = dao.getById(id);
<br/>        if (RecUtil.isNotExist(record)) {
<br/>            return result.error(2, &quot;考试记录不存在&quot;);
<br/>        }
<br/>
<br/>        // 查看状态
<br/>        final String status = record.getStatus();
<br/>        if (!ExamStatus.NOT_START.getValue().toString().equals(status)) {
<br/>            return result.error(3, &quot;请选择&quot; + ExamStatus.NOT_START.getName() + &quot;的记录进行操作&quot;);
<br/>        }
<br/>
<br/>        // 1.更新考试记录状态
<br/>        dao.updateStatus(TalentUtil.getStatusMap(id, ExamStatus.WAIT_EXAM.getValue(), ExamStatus.NOT_START.getValue()));
<br/>
<br/>        // 2.发布试卷
<br/>        if (RecConstants.ExamType.GENERAL.equals(record.getExamType())) {
<br/>            this.doPublish(record);
<br/>        } else {
<br/>            this.doPublishRule(record);
<br/>        }
<br/>        // 查询考试人员
<br/>        List&lt;RecExamTrainOtherRecordEmp&gt; recordEmpList = getEmpListByRecordId(id, &quot;id&quot;, &quot;emp_origin_id&quot;, &quot;emp_name&quot;,                 &quot;rec_exam_train_record_id&quot;,&quot;rec_exam_paper_name&quot;);
<br/>        // 3.生成协同待办消息
<br/>        this.insertCoporationMsg(record, recordEmpList);
<br/>
<br/>        return result;
<br/>    }

</div>
</body>
</html>